package com.unism.util;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

public class MapTool {
   
//  public static List<Map<String, Object>> parseJSON2List(String jsonStr){
//    JSONArray jsonArr = JSONArray.fromObject(jsonStr);
//    List<Map<String, Object>> list = new ArrayList<Map<String,Object>>();
//    Iterator<JSONObject> it = jsonArr.iterator();
//    while(it.hasNext()){
//      JSONObject json2 = it.next();
//      list.add(parseJSON2Map(json2.toString()));
//    }
//    return list;
//  }
  
   
  public static Boolean parseJSON2Map(String jsonStr,Map<String, Object> param){
    //最外层解析
	  try {
		  JSONObject json = JSONObject.fromObject(jsonStr);
		    for(Object k : json.keySet()){
		      Object v = json.get(k); 
		      //如果内层还是数组的话，继续解析
		      if(v instanceof JSONArray){
		        List<Object> list = new ArrayList<Object>();
		        if(((JSONArray)v).isArray()){
		         Object[] values=((JSONArray)v).toArray();
		          for(Object value :values){
		        	  list.add(value);
		          }
		        }
		        param.put(k.toString(), list);
		      }else{
		    	  param.put(k.toString(), v); 
		      }
		    }
		    return true;
	} catch (Throwable e) {
		// TODO: handle exception
		return false;
	}
  }
  
  public static Boolean isJSON(String jsonStr){
	    
		  try {
			  JSONObject json = JSONObject.fromObject(jsonStr);
			   return true;
		} catch (Throwable e) {
			// TODO: handle exception
			return false;
		}
	  }
 }


//public static Map<String, Object> parseJSON2Map(String jsonStr){
//    Map<String, Object> map = new HashMap<String, Object>();
//    //最外层解析
//    JSONObject json = JSONObject.fromObject(jsonStr);
//    for(Object k : json.keySet()){
//      Object v = json.get(k); 
//      //如果内层还是数组的话，继续解析
//      if(v instanceof JSONArray){
//        List<Map<String, Object>> list = new ArrayList<Map<String,Object>>();
//        Iterator<JSONObject> it = ((JSONArray)v).iterator();
//        while(it.hasNext()){
//          JSONObject json2 = it.next();
//          list.add(parseJSON2Map(json2.toString()));
//        }
//        map.put(k.toString(), list);
//      } else {
//        map.put(k.toString(), v);
//      }
//    }
//    return map;
//  }